package com.yx.cloud.product;

import android.graphics.Bitmap;

import com.aaa.async.ProgressivePromise;
import com.aaa.async.Promise;
import com.alibaba.fastjson.JSONObject;
//import com.iot.base.bean.Device;
//import com.iot.base.config.Configuration;
//import com.iot.base.product.Product;
//import com.iot.base.service.req.MessageParam;
//import com.iot.base.service.req.RemoveDeviceParam;
//import com.iot.base.service.req.RemoveSharedUserParam;
//import com.iot.base.service.req.RenameDeviceParam;
//import com.iot.base.service.req.ShareDeviceParam;
//import com.iot.product.sweeper.bean.QuietHour;
//import com.iot.product.sweeper.config.SweeperProductConfig;
//import com.iot.sweeper.IOTSweeperService;
//import com.iot.sweeper.param.AddAppointmentParam;
//import com.iot.sweeper.param.BaseStationSettingParam;
//import com.iot.sweeper.param.ChangeAppointmentParam;
//import com.iot.sweeper.param.CleanParam;
//import com.iot.sweeper.param.CleanSettingParam;
//import com.iot.sweeper.param.ClearCustomModeParam;
//import com.iot.sweeper.param.DeleteAppointmentParam;
//import com.iot.sweeper.param.DeleteCleanRecordParam;
//import com.iot.sweeper.param.GetCleanRecordDetailParam;
//import com.iot.sweeper.param.GetCleanRecordParam;
//import com.iot.sweeper.param.GetPathParam;
//import com.iot.sweeper.param.MergeRoomParam;
//import com.iot.sweeper.param.RemoteControlParam;
//import com.iot.sweeper.param.RemoveMapParam;
//import com.iot.sweeper.param.RenameMapParam;
//import com.iot.sweeper.param.RenameRoomParam;
//import com.iot.sweeper.param.SaveCustomModeParam;
//import com.iot.sweeper.param.SaveMapParam;
//import com.iot.sweeper.param.SetAreaParam;
//import com.iot.sweeper.param.SetMapParam;
//import com.iot.sweeper.param.SetQuiteTimeParam;
//import com.iot.sweeper.param.SetVoicePackageParam;
//import com.iot.sweeper.param.SplitRoomParam;
//import com.tuya.smart.sdk.bean.feedback.FeedbackBean;
import java.util.ArrayList;
import java.util.List;

/**
 * 涂鸦产品基类
 * <p>
 * 实现了涂鸦 通用的一些接口 登录注册之类的
 * <p>
 * 子产品 如果有修改可以覆盖
 */
//public class TuyaProduct extends Product<SweeperProductConfig, IOTSweeperService> implements IOTSweeperService, Configuration {
//
//    protected List<String> series = new ArrayList<>();
//
//    public TuyaProduct() {
//        config = new SweeperProductConfig();
//        initConfig();
//    }
//
//    public boolean isInSeries(String productId) {
//        if (series.isEmpty() || series.contains(productId)) {
//            return true;
//        }
//        return false;
//    }
//
//    public SweeperProductConfig getConfig() {
//        return config;
//    }
//
//    public void setConfig(SweeperProductConfig config) {
//        this.config = config;
//    }
//
//    @Override
//    public void initConfig() {
//
//    }
//
//    @Override
//    public Object parse(Object o) {
//        return null;
//    }
//
//    @Override
//    public void setCleanSettings(CleanSettingParam cleanSettingParam) {
//
//    }
//
//    @Override
//    public void getCleanSettings() {
//
//    }
//
//    @Override
//    public void startSweep(CleanParam cleanParam) {
//
//    }
//
//    @Override
//    public void pauseSweep() {
//
//    }
//
//    @Override
//    public void continueSweep(CleanParam cleanParam) {
//
//    }
//
//    @Override
//    public void stopSweep() {
//
//    }
//
//    @Override
//    public void startRecharge() {
//
//    }
//
//    @Override
//    public void pauseRecharge() {
//
//    }
//
//    @Override
//    public void continueRecharge() {
//
//    }
//
//    @Override
//    public void stopRecharge() {
//
//    }
//
//    @Override
//    public void startRemoteControl() {
//
//    }
//
//    @Override
//    public void remoteControl(RemoteControlParam remoteControlParam) {
//
//    }
//
//    @Override
//    public void stopRemoteControl() {
//
//    }
//
//    @Override
//    public void locateDevice() {
//
//    }
//
//    @Override
//    public void collectDust() {
//
//    }
//
//    @Override
//    public void getDeviceState() {
//
//    }
//
//    @Override
//    public void getMapList() {
//
//    }
//
//    @Override
//    public void setCurrentMap(SetMapParam setMapParam) {
//
//    }
//
//    @Override
//    public void removeMap(RemoveMapParam removeMapParam) {
//
//    }
//
//    @Override
//    public void resetMap() {
//
//    }
//
//    @Override
//    public void saveMap(SaveMapParam saveMapParam) {
//
//    }
//
//    @Override
//    public void renameMap(RenameMapParam renameMapParam) {
//
//    }
//
//    @Override
//    public void requestMap() {
//
//    }
//
//    @Override
//    public void requestPath(GetPathParam getPathParam) {
//
//    }
//
//    @Override
//    public void requestArea() {
//
//    }
//
//    @Override
//    public void setArea(SetAreaParam setAreaParam) {
//
//    }
//
//    @Override
//    public void intelligentPartition() {
//
//    }
//
//    @Override
//    public void requestRoom() {
//
//    }
//
//    @Override
//    public void renameRoom(RenameRoomParam renameRoomParam) {
//
//    }
//
//    @Override
//    public void mergeRoom(MergeRoomParam mergeRoomParam) {
//
//    }
//
//    @Override
//    public void resetRoom() {
//
//    }
//
//    @Override
//    public void splitRoom(SplitRoomParam splitRoomParam) {
//
//    }
//
//    @Override
//    public void clearCustomMode(ClearCustomModeParam clearCustomModeParam) {
//
//    }
//
//    @Override
//    public void saveCustomMode(SaveCustomModeParam saveCustomModeParam) {
//
//    }
//
//    @Override
//    public void switchCustomMode(boolean b) {
//
//    }
//
//    @Override
//    public void getAppointmentList() {
//
//    }
//
//    @Override
//    public void addAppointment(AddAppointmentParam addAppointmentParam) {
//
//    }
//
//    @Override
//    public void deleteAppointment(DeleteAppointmentParam deleteAppointmentParam) {
//
//    }
//
//    @Override
//    public void changeAppointment(ChangeAppointmentParam changeAppointmentParam) {
//
//    }
//
//    @Override
//    public void setQuiteTimeSettings(SetQuiteTimeParam setQuiteTimeParam) {
//
//    }
//
//    @Override
//    public void modifyNoDisturb(QuietHour quietHour) {
//
//    }
//
//    @Override
//    public void deleteNoDisturb(List<String> list) {
//
//    }
//
//    @Override
//    public void getQuiteTimeSettings() {
//
//    }
//
//    @Override
//    public void getConsumptionInfo() {
//
//    }
//
//    @Override
//    public void resetComsuptionInfo(String s) {
//
//    }
//
//    @Override
//    public void setVoice(SetVoicePackageParam setVoicePackageParam) {
//
//    }
//
//    @Override
//    public void getVoiceList() {
//
//    }
//
//    @Override
//    public void getCleanRecord(GetCleanRecordParam getCleanRecordParam) {
//
//    }
//
//    @Override
//    public void getCleanRecordDetail(GetCleanRecordDetailParam getCleanRecordDetailParam) {
//
//    }
//
//    @Override
//    public void deleteCleanRecord(DeleteCleanRecordParam deleteCleanRecordParam) {
//
//    }
//
//    @Override
//    public void getCleanStatistic() {
//
//    }
//
//    @Override
//    public void getMessageList(MessageParam messageParam) {
//
//    }
//
//    @Override
//    public void parseDeviceData(int i, Object o) {
//
//    }
//
//    @Override
//    public void connectDevice(Device device) {
//
//    }
//
//    @Override
//    public void disconnectDevice(Device device) {
//
//    }
//
//    @Override
//    public void shareDevice(ShareDeviceParam shareDeviceParam) {
//
//    }
//
//    @Override
//    public void getSharedUser() {
//
//    }
//
//    @Override
//    public void removeSharedUser(RemoveSharedUserParam removeSharedUserParam) {
//
//    }
//
//    @Override
//    public void renameDevice(RenameDeviceParam renameDeviceParam) {
//
//    }
//
//    @Override
//    public void removeDevice(RemoveDeviceParam removeDeviceParam) {
//
//    }
//
//    @Override
//    public void factoryReset() {
//
//    }
//
//    @Override
//    public void getFirmwareInfo() {
//
//    }
//
//    @Override
//    public void checkNewVersion() {
//
//    }
//
//    @Override
//    public void updateFirmware() {
//
//    }
//
//    @Override
//    public void getBaseStationInfo() {
//
//    }
//
//    @Override
//    public void setBaseStationSetting(BaseStationSettingParam baseStationSettingParam) {
//
//    }
///*
//    @Override
//    public Device getCurrentDevice() {
//        return TuyaSdk.get().getCurrentDevice();
//    }
//
//    @Override
//    public void connectDevice(Device device) {
//        TuyaSdk.get().connectDevice(device, null);
//    }
//
//    @Override
//    public void disconnectDevice(Device device) {
//        TuyaSdk.get().disconnectDevice(device);
//    }
//
//    @Override
//    public Promise<Account, TuyaSdkException> login(LoginParam param) {
//        Promise<Account, TuyaSdkException> promise = TuyaSdk.get().login(param);
//        return promise;
//    }
//
//    @Override
//    public Promise<Account, TuyaSdkException> bindMobile(BindAccountParam bindParam) {
//        Promise<Account, TuyaSdkException> promise = TuyaSdk.get().bindMobile(bindParam);
//        return promise;
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> sendBindVerifyCode(LoginParam param) {
//        Promise<Void, TuyaSdkException> promise = TuyaSdk.get().sendBindVerifyCode(param);
//        return promise;
//    }
//
//    @Override
//    public Promise<Account, TuyaSdkException> bindEmail(BindAccountParam bindParam) {
//        Promise<Account, TuyaSdkException> promise = TuyaSdk.get().bindEmail(bindParam);
//        return promise;
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> sendBindVerifyCodeWithEmail(LoginParam param) {
//        Promise<Void, TuyaSdkException> promise = TuyaSdk.get().sendBindVerifyCodeWithEmail(param);
//        return promise;
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> getAuthCode(GetAuthCodeParam param) {
//        return TuyaSdk.get().getAuthCode(param);
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> checkAuthCode(CheckAuthCodeParam param) {
//        return TuyaSdk.get().checkAuthCode(param);
//    }
//
//    @Override
//    public Promise<Account, TuyaSdkException> register(RegisterParam param) {
//        return TuyaSdk.get().register(param);
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> changPassword(ChangePasswordParam param) {
//        ResetPasswordParam resetPasswordParam = new ResetPasswordParam();
//        resetPasswordParam.setAccount(param.getAccount());
//        resetPasswordParam.setCode(param.getCode());
//        resetPasswordParam.setCountryCode(param.getCountryCode());
//        resetPasswordParam.setNewPassword(param.getNewPassword());
//        resetPasswordParam.setAccountType(param.getAccountType());
//        return TuyaSdk.get().resetPassword(resetPasswordParam);
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> resetPassword(ResetPasswordParam param) {
//        return TuyaSdk.get().resetPassword(param);
//    }
//
//    @Override
//    public boolean isLogin() {
//        return TuyaSdk.get().isLogin();
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> setNickName(SetNickNameParam param) {
//        return TuyaSdk.get().setNickName(((SetNickNameParam) param).getNickname());
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> setUserHead(UploadHeadPicParam param) {
//        return TuyaSdk.get().uploadUserHeadPicture(((UploadHeadPicParam) param).getFile());
//    }
//
//    @Override
//    public Promise<Bitmap, TuyaSdkException> getUserHeadPicture(String path) {
//        return TuyaSdk.get().getUserHeadPicture(path);
//    }
//
//    @Override
//    public Promise<Account, TuyaSdkException> getUserInfo() {
//        return TuyaSdk.get().getUserMessage();
//    }
//
//    @Override
//    public Promise<Account, TuyaSdkException> updateUserInfo() {
//        return TuyaSdk.get().updateUserInfo();
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> logout() {
//        return TuyaSdk.get().logout();
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> cancelAccount() {
//        return TuyaSdk.get().cancelAccount();
//    }
//
//    @Override
//    public Promise<List<IotMessage>, TuyaSdkException> getNotification(GetNotificationParam param) {
//        return TuyaSdk.get().getNotification(param);
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> deleteNotification(DeleteNotificationParam param) {
//        if (param.getType() == DeleteNotificationParam.DELETE_BY_DEVICE) {
//            return TuyaSdk.get().deleteNotificationByDevice(param);
//        } else {
//            return TuyaSdk.get().deleteNotification(param);
//        }
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> hasNewNotification(Request request) {
//        return TuyaSdk.get().hasNewNotification(request);
//    }
//
//    @Override
//    public Promise<List<Robot>, TuyaSdkException> getDeviceList() {
//        return TuyaSdk.get().getDeviceList();
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> initNetworkConfig() {
//        return TuyaSdk.get().getActivatorToken();
//    }
//
//    @Override
//    public ProgressivePromise<Device, TuyaSdkException, String> addDevice(NetworkConfigParam param) {
//        return TuyaSdk.get().startNetworkConfig(param);
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> tuyaBluetoothScan() {
//        return TuyaSdk.get().startTuyaBluetoothScan();
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> tuyaStopLeScan() {
//        return TuyaSdk.get().stopLeScan();
//    }
//
//    @Override
//    public ProgressivePromise<Device, TuyaSdkException, String> addTuyaBluetoothDevice(BluetoothScanDeviceBean param) {
//        return TuyaSdk.get().startTuyaBluetoothConfig(param);
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> stopBluetoothConfig(BluetoothScanDeviceBean param) {
//        return TuyaSdk.get().stopBluetoothConfig(param);
//    }
//
//    @Override
//    public ProgressivePromise<Device, TuyaSdkException, String> tuyaQrCodeConfig(NetworkConfigParam param) {
//        return TuyaSdk.get().tuyaQrCodeConfig(param);
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> getTuyaQrcodeConfigToken(NetworkConfigParam param) {
//        return TuyaSdk.get().getTuyaQrcodeConfigToken(param);
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> shareDevice(ShareDeviceParam param) {
//        return TuyaSdk.get().shareDevice(param);
//    }
//
//    @Override
//    public Promise<List<Account>, TuyaSdkException> getSharedUser() {
//        return TuyaSdk.get().getShareUserList();
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> removeSharedUser(RemoveSharedUserParam param) {
//        return TuyaSdk.get().removeShareUser(Long.parseLong(param.getUserId()));
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> renameDevice(RenameDeviceParam param) {
//        return TuyaSdk.get().renameDevice(param.getName());
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> removeDevice(RemoveDeviceParam param) {
//        return TuyaSdk.get().removeDevice(param);
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> deleteCleanRecord(DeleteCleanRecordParam param) {
//        return TuyaSdk.get().deleteCleanRecord(param);
//    }
//
//
//    @Override
//    public Promise<FirmwareUpdateInfo, TuyaSdkException> checkNewVersion() {
//        return TuyaSdk.get().checkNewVersion();
//    }
//
//    @Override
//    public ProgressivePromise<?, TuyaSdkException, Integer> updateFirmware() {
//        return TuyaSdk.get().updateFirmware();
//    }
//
//    @Override
//    public Promise<?, TuyaSdkException> getAutoUpgradeSwitchState() {
//        return TuyaSdk.get().getAutoUpgradeSwitchState();
//    }
//
//    @Override
//    public Promise<?, TuyaSdkException> setChangeAutoUpgradeSwitchState(int state) {
//        return TuyaSdk.get().setChangeAutoUpgradeSwitchState(state);
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> addFeedbackMsg(AddFeedBackMsgParam param) {
//        return TuyaSdk.get().addFeedbackMsg(param);
//    }
//
//    @Override
//    public Promise<List<FeedbackBean>, TuyaSdkException> getFeedbackList() {
//        return TuyaSdk.get().getFeedbackList();
//    }
//
//    @Override
//    public Promise<List<FeedbackMsgBean>, TuyaSdkException> getFeedbackMsg(FeedBackDetailsParam param) {
//        return TuyaSdk.get().getFeedbackMsg(param);
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> factoryReset() {
//        return TuyaSdk.get().factoryReset();
//    }
//
//    @Override
//    public Promise<List<VoiceInfoBean>, TuyaSdkException> getVoiceList() {
//        return TuyaSdk.get().getVoiceList();
//    }
//
//
//    @Override
//    public Promise<Void, TuyaSdkException> initVideo(CameraInitParam param){
//        return  TuyaSdk.get().initVideo(param);
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> setVideoClarity(int mode){
//        return TuyaSdk.get().setClarity(mode);
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> videoScreenshot(){
//        return TuyaSdk.get().screenshot();
//    }
//
//    @Override
//    public Promise<?, TuyaSdkException> startVideoRecord() {
//        return TuyaSdk.get().startRecordVideo();
//    }
//
//    @Override
//    public Promise<?, TuyaSdkException> stopVideoRecord() {
//        return TuyaSdk.get().stopRecordVideo();
//    }
//
//    @Override
//    public Promise<?, TuyaSdkException> startAudioRecord() {
//        return TuyaSdk.get().startRecordAudio();
//    }
//
//    @Override
//    public Promise<?, TuyaSdkException> stopAudioRecord() {
//        return TuyaSdk.get().stopRecordAudio();
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> startPlayVideo(){
//        return TuyaSdk.get().startPlayVideo();
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> stopPlayVideo(){
//        return TuyaSdk.get().stopPlayVideo();
//    }
//
//    @Override
//    public Promise<Void, TuyaSdkException> destroyVideo(){
//        return TuyaSdk.get().destroyVideo();
//    }
//
//
//    @Override
//    public Promise<?, TuyaSdkException> setBaseStation(BaseStationParam param) {
//        return null;
//    }
//
//    public String getTimeStringByHourMinute(int timeInDay) {
//        int h = timeInDay / 3600;
//        int m = timeInDay / 60 % 60;
//        return getDouble(h) + ":" + getDouble(m);
//    }
//
//    private String getDouble(int n) {
//        return n >= 10 ? n + "" : "0" + n;
//    }
//
//    protected String genDp(String dp, Object data) {
//        JSONObject jsonObject = new JSONObject();
//        jsonObject.put(dp, data);
//        return jsonObject.toJSONString();
//    }
//
//    protected static int getErrorCode(int errCode) {
//        //RS01 RS11 GD  LF  不加   其余-1
//        int code = 1;
//        while (errCode >= 2) {
//            errCode = errCode / 2;
//            code += 1;
//        }
//        return code;
//    }*/
//}

